'use strict'
const path = require('path')
// const defaultSettings = require('./src/settings.js')

function resolve(dir) {
	// __dirname = / 根路径
	return path.join(__dirname, dir) // 路径拼接
}

const name = '上海市奉贤区人民政府门户网站-政府信息公开' // page title

// const port = process.env.port || process.env.npm_config_port || 9528; // dev port

module.exports = {
	publicPath: '/', //  抽离
	outputDir: 'front',
	assetsDir: 'assets',
	lintOnSave: true,
	// lintOnSave: process.env.NODE_ENV === "development", // 是否开启lint 检测
	productionSourceMap: false,
	devServer: {
		port: '8000',
		proxy: process.env.VUE_APP_URL,
		open: false
	},
	configureWebpack: {
		name: name,
		resolve: {
			alias: {
				'@': resolve('src'),
				'%': resolve('src/api')
			}
		}
	},
	chainWebpack(config) {
		config.plugins.delete('preload') // TODO: need test
		config.plugins.delete('prefetch') // TODO: need test

		// set svg-sprite-loader

		// config.module
		//   .rule('svg')
		//   .exclude.add(resolve('src/icons'))
		//   .end()
		// config.module
		//   .rule('icons')
		//   .test(/\.svg$/)
		//   .include.add(resolve('src/icons'))
		//   .end()
		//   .use('svg-sprite-loader')
		//   .loader('svg-sprite-loader')
		//   .options({
		//     symbolId: 'icon-[name]'
		//   })
		//   .end()
		config.module.rule('svg').uses.delete('file-loader')
		config.module.rule('svg').use('svg-sprite').loader('svg-sprite-loader').options({
			extract: false,
			symbolId: 'icon-[name]'
		})

		// set preserveWhitespace
		config.module
			.rule('vue')
			.use('vue-loader')
			.loader('vue-loader')
			.tap(options => {
				options.compilerOptions.preserveWhitespace = true
				return options
			})
			.end()

		config
			// https://webpack.js.org/configuration/devtool/#development
			.when(process.env.NODE_ENV === 'development', config => config.devtool('cheap-source-map'))

		// config.when(process.env.NODE_ENV !== 'development', config => {
		//   config
		//     .plugin('ScriptExtHtmlWebpackPlugin')
		//     .after('html')
		//     .use('script-ext-html-webpack-plugin', [
		//       {
		//         // `runtime` must same as runtimeChunk name. default is `runtime`
		//         inline: /runtime\..*\.js$/
		//       }
		//     ])
		//     .end()
		//   config.optimization.splitChunks({
		//     chunks: 'all',
		//     cacheGroups: {
		//       libs: {
		//         name: 'chunk-libs',
		//         test: /[\\/]node_modules[\\/]/,
		//         priority: 10,
		//         chunks: 'initial' // only package third parties that are initially dependent
		//       },
		//       elementUI: {
		//         name: 'chunk-elementUI', // split elementUI into a single package
		//         priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
		//         test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
		//       },
		//       commons: {
		//         name: 'chunk-commons',
		//         test: resolve('src/components'), // can customize your rules
		//         minChunks: 3, //  minimum common number
		//         priority: 5,
		//         reuseExistingChunk: true
		//       }
		//     }
		//   })
		//   config.optimization.runtimeChunk('single')
		// })
	}
}
